package chapter3.lc27;

//LC 27 移除元素 你需要原地移除所有数值等于 val 的元素，并返回移除后数组的新长度

/**
 * 双指针，如果不是要移除的元素就swap到前面去
 */
public class RemoveElement {
    public int removeElement(int[] nums, int val) {
        int j = 0, count = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != val) {
                swap(nums, i, j++);
                count++;
            }
        }
        return count;
    }

    public void swap(int[] nums, int i, int j) {
        if (i == j) return;
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}
